package com.fy.proj1_springboot_basic;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Spring Boot 应用程序的主入口类
 * <p>
 * 该类是整个 Spring Boot 应用的启动器，通过 {@link SpringApplication#run(Class, String...)} 方法
 * 引导 Spring 上下文、启动自动配置并初始化嵌入式服务器（如 Tomcat）。
 * <p>
 * 类上标注的 {@link SpringBootApplication} 注解是一个组合注解，包含以下核心功能：
 * <ul>
 *   <li>{@code @SpringBootConfiguration}: 将该类标记为配置类，允许定义 Bean</li>
 *   <li>{@code @EnableAutoConfiguration}: 启用 Spring Boot 的自动配置机制，根据依赖自动配置 Spring 上下文和常用组件（Tomcat 服务器）</li>
 *   <li>{@code @ComponentScan}: 自动扫描当前包及其子包下的 Spring 组件（如 @Controller、@Service 等），并将其注册为 Spring Bean</li>
 * </ul>
 */
@SpringBootApplication
public class Proj1SpringbootBasicApplication {

	/**
	 * Java 应用程序的主入口方法
	 * <p>
	 * 该方法通过调用 {@link SpringApplication#run(Class, String...)} 启动 Spring Boot 应用：
	 * <ol>
	 *   <li>加载 Spring 应用上下文（ApplicationContext）</li>
	 *   <li>执行自动配置（根据 pom.xml 中的依赖自动配置数据源、Web 服务器等）</li>
	 *   <li>启动嵌入式 Web 服务器（默认 Tomcat），监听 HTTP 请求</li>
	 * </ol>
	 *
	 * @param args 命令行参数（可通过启动命令传递，如 --server.port=8081 修改端口）
	 */
	public static void main(String[] args) {
		// 启动 Spring Boot 应用，传入当前类作为主配置类和命令行参数
		SpringApplication.run(Proj1SpringbootBasicApplication.class, args);
		for (String arg : args) {
			System.out.println("命令行参数：" + arg);
		}
	}

}
